package cn.ycgogo.org.basic.servie;

import cn.ycgogo.org.basic.query.BaseQuery;
import cn.ycgogo.org.util.PageList;

import java.util.List;

/**
 * The interface Base service.
 * Base抽取Service公共方法
 * @param <T> the type parameter
 */
public interface BaseService<T> {
    /**
     * 添加方法
     *
     * @param t 部门对象
     */
    void save(T t);

    /**
     * 修改方法
     *
     * @param t 部门对象
     */
    void update(T t);

    /**
     * Remove 删除方法
     *
     * @param id 部门ID
     */
    void remove(Long id);

    /**
     * Load by id T. 查询单个部门
     *
     * @param id 部门ID
     * @return 返回部门对象 T
     */
    T loadById(Long id);

    /**
     * Load all list. 查询所有部门
     *
     * @return 返回所有部门集合 list
     */
    List<T> loadAll();

    /**
     * Query page page list. 分页数据
     *
     * @param query 个数和分页数据
     * @return 返回一个分页对象 page list
     */
    PageList<T> queryPage(BaseQuery query);

    /**
     * 批量删除
     *
     * @param ids the ids
     */
    void patchDelete(List<Long> ids);
}
